#if !defined(__APP_DEVICE)
#define __APP_DEVICE
#include <pthread.h>
#include "app_buffer.h"
 
#define DEVICE_FILE_NAME "/dev/ttyS1" //生产设备名称
//#define DEVICE_FILE_NAME "/home/atguigu/gateway1031/dev_test_file" //测试设备名称
typedef struct
{
    char *dev_filename; //对应通信外设的文件名带路径
    int  dev_fd; //设备文件打开后的文件描述符
    pthread_t read_thread ; //设备文件读线程
    int (*post_read)(char *, int); //读后预处理
    int (*pre_write)(char *, int);  //写前预处理 
    int is_running ;  // 是否运行
    app_buffer_t *up_buffer ; //上行缓冲区
    app_buffer_t *down_buffer ; //下行缓冲区

}app_device_t;

/**
 * @brief 初始化设备 
 * @return  返回设备指针
 */
app_device_t *app_device_init();


/**
 * @brief 启动设备
 * 1  启动从蓝牙设备文件读取的线程 
 * 2  向mqtt模块注册接收到数据的回调函数
 */
void app_device_start();


/**
 * @brief 停止销毁设备
 */
void app_device_destroy();

#endif // __APP_DEVICE
